package ejb.casacentral.service.jms;

import java.util.Hashtable;

import javax.ejb.Stateless;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import ejb.casacentral.log.CasaLogger;

@Stateless
public class MensajeJMSSenderBean implements MensajeJMSSender {

	
	@Override
	public void sendMesaje(String remitoXml, String ip,
			String cola) {
		
		try {
			CasaLogger.log(remitoXml);
			Hashtable<String, String> props = new Hashtable<String, String>();
			props.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
			props.put(InitialContext.PROVIDER_URL, "jnp://"+ip+":1099");
			
			Context ctx= new InitialContext(props);
			
			// buscar la Connection Factory en JNDI
			QueueConnectionFactory qfactory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");
			// buscar la Cola en JNDI
			Queue queue;

			queue = (Queue) ctx.lookup("queue/"+cola);

			// crear la connection y la session a partir de la connection
			QueueConnection qCon = qfactory.createQueueConnection();
			QueueSession qSession = qCon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

			// crear un producer para enviar mensajes usando la session
			QueueSender qSender = qSession.createSender(queue);
			// crear un mensaje de tipo text y setearle el contenido
			TextMessage message = qSession.createTextMessage();
			message.setText(remitoXml);
			// enviar el mensaje
			qSender.send(message); 

			} catch (NamingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (JMSException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}

}
